HAL QSPI callback functions migration

This section provides information about the HAL QSPI callback functions migration.

Callback functions in non-blocking modes

HAL QSPI error callback

HAL1

HAL2

HAL_QSPI_ErrorCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_ErrorCallback(hal_xspi_handle_t *hxspi);

HAL QSPI abort completed callback

HAL1

HAL2

HAL_QSPI_AbortCpltCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_AbortCpltCallback(hal_xspi_handle_t *hxspi);

HAL QSPI FIFO threshold callback

HAL1

HAL2

HAL_QSPI_FifoThresholdCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_FifoThresholdCallback(hal_xspi_handle_t *hxspi);

HAL QSPI indirect mode callback functions

HAL QSPI command completed callback

HAL1

HAL2

HAL_QSPI_CmdCpltCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_CmdCpltCallback(hal_xspi_handle_t *hxspi);

HAL QSPI RX transfer completed callback

HAL1

HAL2

HAL_QSPI_RxCpltCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_RxCpltCallback(hal_xspi_handle_t *hxspi);

HAL QSPI TX transfer completed callback

HAL1

HAL2

HAL_QSPI_TxCpltCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_TxCpltCallback(hal_xspi_handle_t *hxspi);

HAL QSPI RX half completed callback

HAL1

HAL2

HAL_QSPI_RxHalfCpltCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_RxHalfCpltCallback(hal_xspi_handle_t *hxspi);

HAL QSPI TX half completed callback

HAL1

HAL2

HAL_QSPI_TxHalfCpltCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_TxHalfCpltCallback(hal_xspi_handle_t *hxspi);

HAL QSPI status flag polling mode function

HAL QSPI status match callback

HAL1

HAL2

HAL_QSPI_StatusMatchCallback(QSPI_HandleTypeDef *hqspi);
HAL_XSPI_StatusMatchCallback(hal_xspi_handle_t *hxspi);

HAL QSPI memory-mapped mode function

HAL QSPI timeout callback

HAL1

HAL2

HAL_QSPI_TimeOutCallback(QSPI_HandleTypeDef *hqspi);

Removed from HAL2.

The HAL_QSPI_TimeOutCallback is now handled inside the HAL_XSPI_ErrorCallback(hal_xspi_handle_t *hxspi) function.

Note

Error code can be retrieved from HAL_XSPI_GetLastErrorCodes().

HAL QSPI register/unregister callback functions

HAL QSPI register callback

In HAL1, the function HAL_QSPI_RegisterCallback() is used to register various QSPI callbacks through a single function with a specific callback ID, whereas, in HAL2, distinct functions are available to register each specific XSPI callback.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_TX_CPLT_CB_ID,
                          USER_QSPI_TxCpltCallback)
HAL_XSPI_RegisterTxCpltCallback(&hxspi,
                                USER_QSPI_TxCpltCallback);

Rx Complete Callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_RX_CPLT_CB_ID,
                          USER_QSPI_RxCpltCallback)
HAL_XSPI_RegisterRxCpltCallback(&hxspi,
                                USER_QSPI_RxCpltCallback);

Tx Half Complete Callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_TX_HALF_CPLT_CB_ID,
                          USER_QSPI_TxHalfCpltCallback);
HAL_XSPI_RegisterRxCpltCallback(&hxspi,
                                USER_QSPI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_RX_HALF_CPLT_CB_ID,
                          USER_QSPI_RxHalfCpltCallback);
HAL_XSPI_RegisterRxCpltCallback(&hxspi,
                                USER_QSPI_RxHalfCpltCallback);

QSPI error callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_ERROR_CB_ID,
                          USER_QSPI_ErrorCallback);
HAL_XSPI_RegisterErrorCallback(&hxspi,
                               USER_QSPI_ErrorCallback);

QSPI abort callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_ABORT_CB_ID,
                          USER_QSPI_AbortCpltCallback);
HAL_XSPI_RegisterAbortCpltCallback(&hxspi,
                                   USER_QSPI_AbortCpltCallback);

QSPI FIFO Threshold callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_FIFO_THRESHOLD_CB_ID,
                          USER_QSPI_FIFO_THRESHOLD_CpltCallback);
HAL_XSPI_RegisterFifoThresholdCallback(&hxspi,
                                       USER_QSPI_FIFO_THRESHOLD_CpltCallback);

QSPI Command complete callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_CMD_CPLT_CB_ID,
                          USER_QSPI_Cmd_CpltCallback);
HAL_XSPI_RegisterCmdCpltCallback(&hxspi,
                                 USER_QSPI_Cmd_CpltCallback);

QSPI Status match callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_STATUS_MATCH_CB_ID,
                          USER_QSPI_Status_Match_CpltCallback);
HAL_XSPI_RegisterStatusMatchCallback(&hxspi,
                                     USER_QSPI_Status_Match_CpltCallback);

QSPI Timeout callback

HAL_QSPI_RegisterCallback(&hqspi,
                          HAL_QSPI_TIMEOUT_CB_ID,
                          USER_QSPI_timeout_CpltCallback);
HAL_XSPI_RegisterErrorCallback(&hxspi,
                               USER_QSPI_timeout_CpltCallback);

Related concept: Individual callback registration APIs replace global register and unregister functions


HAL QSPI unregister callback

In HAL2, the unregister callback API has been removed. Instead, callbacks can be managed by re-registering the default HAL QSPI weak callbacks as needed.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_TX_CPLT_CB_ID);
HAL_XSPI_RegisterTxCpltCallback(&hxspi,
                                HAL_XSPI_TxCpltCallback);

Rx Complete Callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_RX_CPLT_CB_ID);
HAL_XSPI_RegisterRxCpltCallback(&hxspi,
                                HAL_XSPI_RxCpltCallback);

Tx Half Complete Callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_TX_HALF_CPLT_CB_ID;);
HAL_XSPI_RegisterRxCpltCallback(&hxspi,
                                HAL_XSPI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_RX_HALF_CPLT_CB_ID);
HAL_XSPI_RegisterRxCpltCallback(&hxspi,
                                HAL_XSPI_RxHalfCpltCallback);

QSPI error callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_ERROR_CB_ID);
HAL_XSPI_RegisterErrorCallback(&hxspi,
                               HAL_XSPI_ErrorCallback);

QSPI abort callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_ABORT_CB_ID);
HAL_XSPI_RegisterAbortCpltCallback(&hxspi,
                                   HAL_XSPI_AbortCpltCallback);

QSPI FIFO Threshold callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_FIFO_THRESHOLD_CB_ID);
HAL_XSPI_RegisterFifoThresholdCallback(&hxspi,
                                       HAL_XSPI_FifoThresholdCallback);

QSPI Command complete callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_CMD_CPLT_CB_ID);
HAL_XSPI_RegisterCmdCpltCallback(&hxspi,
                                 HAL_XSPI_CmdCpltCallback);

QSPI Status match callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_STATUS_MATCH_CB_ID);
HAL_XSPI_RegisterStatusMatchCallback(&hxspi,
                                     HAL_XSPI_StatusMatchCallback);

QSPI Timeout callback

HAL_QSPI_UnRegisterCallback(&hqspi,
                            HAL_QSPI_ERROR_CB_ID);
HAL_XSPI_RegisterErrorCallback(&hxspi,
                               HAL_XSPI_ErrorCallback);

Related concept: Individual callback registration APIs replace global register and unregister functions